﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Civilisation_code.PInterfaces_Fabrique_Unite;
using Civilisation_code.PCarte;
using Civilisation_code.PJoueur;

namespace Civilisation_code.Implementation_Unite_EII
{
    /// <summary>
    /// Fabrique des unités de la civilisation EII
    /// Hérite de la classe abstraite Fabrique_Unite
    /// </summary>
    /// <remarks>
    /// Singleton
    /// </remarks>
    [Serializable]
    public class Fabrique_Unite_EII : Fabrique_Unite
    {
        /// <summary>
        /// Création du singleton
        /// </summary>
        public static readonly Fabrique_Unite_EII FABRIQUE_UNITE = new Fabrique_Unite_EII();

        /// <summary>
        /// Constructeur
        /// </summary>
        /// <remarks>
        /// En privé car singleton
        /// </remarks>
        private Fabrique_Unite_EII()
        {
        }

        /// <summary>
        /// Méthode créant un directeur de civilisation EII
        /// </summary>
        /// <param name="c">Case où se situera le directeur</param>
        /// <param name="j">Joueur possédant l'unité</param>
        /// <returns></returns>
        override public Directeur creerDirecteur(Case c, Joueur j)
        {
            return new Directeur_EII(c,j);
        }

        /// <summary>
        /// Méthode créant un enseignant de civilisation EII
        /// </summary>
        /// <param name="c">Case où se situera l'enseignant</param>
        /// <param name="j">Joueur possédant l'unité</param>
        /// <returns></returns>
        override public Enseignant creerEnseignant(Case c, Joueur j)
        {
            return new Enseignant_EII(c,j);
        }

        /// <summary>
        /// Méthode créant un étudiant de civilisation EII
        /// </summary>
        /// <param name="c">Case où se situera l'étudiant EII</param>
        /// <param name="j">Joueur possédant l'unité</param>
        /// <returns></returns>
        override public Etudiant creerEtudiant(Case c, Joueur j)
        {
            return new Etudiant_EII(c,j);
        }
    }
}
